// 版权归陈超所有

#pragma once

#include "CoreMinimal.h"
#include "Characters/CC_CharacterBase.h"
#include "CC_HeroCharacter.generated.h"

class ACC_PlayerState;
class UCameraComponent;
class USpringArmComponent;
/**
 * 
 */
UCLASS()
class CC_AURA_API ACC_HeroCharacter : public ACC_CharacterBase
{
	GENERATED_BODY()

public:
	//构造函数
	ACC_HeroCharacter();

	//服务器端初始化ASC
	virtual void PossessedBy(AController* NewController) override;;
	//客户端初始化ASC
	virtual void OnRep_PlayerState() override;
	
protected:
	//初始化能力演员信息
	virtual void InitCharacterASC() override;

	UPROPERTY()
	TObjectPtr<ACC_PlayerState> CCPlayerState;
	
#pragma region Components
	//弹簧臂组件
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera", meta = (AllowPrivateAccess = "true"))
	TObjectPtr<USpringArmComponent> SpringArm;
	
	//跟随摄像机组件
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera", meta = (AllowPrivateAccess = "true"))
	TObjectPtr<UCameraComponent> FollowCamera;
	
#pragma endregion
	
/*ICC_CombatInterface接口函数:
*		1.获取角色等级
*/
#pragma region ICC_CombatInterface
	
	virtual int32 GetCharacterLevel() override;

#pragma endregion

};
